package com.dragon.modules.yuegou.enums.wallet;

import com.fasterxml.jackson.annotation.JsonCreator;

import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 类型
 * 
 * @author pbuilder generated
 *
 */
public enum MemberTradeType {

	/**
	 * 充值悦币
	 */
	RECHARGE_YUE_COIN(0, "充值悦币"),
	/**
	 * 购买预付卡
	 */
	BUY_YUE_CARD(1, "购买预付卡"),
	/**
	 * 发放福利卡
	 */
	GRANT_YUE_CARD(2, "发放福利卡"),
	/**
	 * 订单支付
	 */
	ORDER_PAY(3, "订单支付"),
	/**
	 * 订单退款
	 */
	ORDER_REFUND(4, "订单退款"),
	/**
	 * 悦卡退卡
	 */
	CARD_REFUND(5, "悦卡退卡"),
		/**
	 * 实体卡绑定
	 */
	ENTITY_BIND(6, "实体卡绑定"),
	/**
	 * 大汉新生活
	 */
	DHXSH(7, "大汉新生活"),
	/**
	 * 实体卡解绑
	 */
	ENTITY_UNBIND(8, "实体卡解绑");

	/**
	 * 枚举标识
	 */
	private final Integer code;

	/**
	 * 别名
	 */
	private final String alias;

	private MemberTradeType(Integer code, String alias) {
		this.code = code;
		this.alias = alias;
	}
	
	public Integer getValue() {
		return code;
	}

	/**
	 * 枚举标识
	 * 
	 * @return code
	 */
	public Integer getCode() {
		return code;
	}

	/**
	 * 别名
	 * 
	 * @return alias
	 */
	public String getAlias() {
		return alias;
	}

	/**
	 * 把code转化为费用类型枚举
	 * 
	 * @param code 代码
	 * @return
	 */
	@JsonCreator
	public static MemberTradeType from(Integer code) {
		if (code == null) {
			return null;
		}
		return CODE_MAP.get(code);
	}

	/**
	 * Code Map for MemberTradeType
	 */
	private static final Map<Integer, MemberTradeType> CODE_MAP = Stream.of(MemberTradeType.values())
			.collect(Collectors.toMap(MemberTradeType::getCode, e -> e));

}
